/*
 * @Description: 
 * @Author: changqing
 * @Date: 2021-08-29 22:57:30
 * @LastEditTime: 2021-08-29 22:57:30
 * @LastEditors: changqing
 * @Usage: 
 */
var { of,timer,interval,Subject } = require("rxjs");
var { map, take,mergeAll } = require("rxjs/operators");

const transformStreamToObservable = round =>
  timer(0, 1000).pipe(
    map(data => `数据流 ${round}: ${++data}`),
    take(3)
  );
  
const subject = new Subject();

const stream = subject.pipe(map(round => transformStreamToObservable(round)));

stream.pipe(mergeAll())
  .subscribe(result => console.log(result));

subject.next(1);

setTimeout(() => {
  subject.next(2);
}, 2000);

setTimeout(() => {
  subject.next(3);
}, 3000);

// 数据流 1: 1
// 数据流 1: 2 
// 数据流 2: 1 第二次事件发生，产生数据充2，原来数据流不退订
// 数据流 1: 3 原來的数据流 1 在此结束
// 数据流 3: 1 第三次事件发生，产生数据流3，原來的数据流不退订
// 数据流 2: 2
// 数据流 3: 2
// 数据流 2: 3
// 数据流 3: 3